Red Hat System Administration II 8.2
В этом упражнении вы запланируете выполнение команд по разным расписаниям, добавив файлы конфигурации в системные каталоги crontab.
Результаты
Вы сможете:
запланировать повторяющееся системное задание для подсчета количества активных пользователей;
обновить юнит таймера
systemd
, который собирает данные о действиях в системе.
Войдите на workstation
как пользователь student
с паролем student
.
На workstation
запустите сценарий lab scheduling-system start, чтобы начать упражнение. Этот сценарий обеспечивает очистку и правильную настройку среды.
[student@workstation ~]$
lab scheduling-system start
На
workstation
установите SSH-подключение кservera
как пользовательstudent
.[student@workstation ~]$
ssh student@servera
...output omitted...[student@servera ~]$
Выполните команду sudo -i, чтобы переключиться на учетную запись пользователя
root
.[student@servera ~]$
sudo -i
[sudo] password for student:
student
[root@servera ~]#
Запланируйте повторяющееся системное задание, которое формирует сообщение log-файла с указанием количества активных пользователей в системе. Задание должно выполняться ежедневно. Вы можете использовать команду w -h | wc -l, чтобы получить количество текущих активных пользователей в системе. Кроме того, используйте команду logger, чтобы сформировать сообщение log-файла.
Создайте файл сценария с именем
/etc/cron.daily/usercount
и следующим содержимым. Используйте команду vi /etc/cron.daily/usercount, чтобы создать файл сценария.#!/bin/bash USERCOUNT=$(w -h | wc -l) logger "There are currently ${USERCOUNT} active users"
Выполните команду chmod, чтобы включить разрешение на выполнение (
x
) для/etc/cron.daily/usercount
.[root@servera ~]#
chmod +x /etc/cron.daily/usercount
Пакет sysstat предоставляет юниты
systemd
с именамиsysstat-collect.timer
иsysstat-collect.service
. Юнит таймера каждые 10 минут запускает юнит службы для сбора данных об активности в системе с помощью сценария оболочки/usr/lib64/sa/sa1
. Убедитесь, что пакет sysstat установлен, и измените файл конфигурации юнита таймера, чтобы данные об активности в системе собирались каждые 2 минуты.Выполните команду yum, чтобы установить пакет sysstat.
[root@servera ~]#
yum install sysstat
...output omitted...Is this ok [y/N]:
y
...output omitted... Installed: sysstat-11.7.3-2.el8.x86_64 lm_sensors-libs-3.4.0-17.20180522git70f7e08.el8.x86_64 Complete!Скопируйте
/usr/lib/systemd/system/sysstat-collect.timer
в/etc/systemd/system/sysstat-collect.timer
.[root@servera ~]#
cp /usr/lib/systemd/system/sysstat-collect.timer \
/etc/systemd/system/sysstat-collect.timer
Важно
Не редактируйте файлы в каталоге
/usr/lib/systemd
. С помощьюsystemd
можно скопировать файл юнита в каталог/etc/systemd/system
и отредактировать эту копию. Процессsystemd
обрабатывает измененную вами копию вместо файла в каталоге/usr/lib/systemd
.Отредактируйте файл
/etc/systemd/system/sysstat-collect.timer
, чтобы юнит таймера запускался каждые 2 минуты. Кроме того, замените каждое вхождение строки10 minutes
на2 minutes
во всем файле конфигурации юнита, включая закомментированные строки. Используйте команду vi /etc/systemd/system/sysstat-collect.timer, чтобы отредактировать файл конфигурации....
# Activates activity collector every 2 minutes
[Unit]Description=Run system activity accounting tool every 2 minutes
[Timer]OnCalendar=*:00/02
[Install] WantedBy=sysstat.serviceВышеуказанные изменения заставляют юнит
sysstat-collect.timer
запускать каждые 2 минуты юнитsysstat-collect.service
, который выполняет команду /usr/lib64/sa/sa1 1 1. Команда /usr/lib64/sa/sa1 1 1 записывает данные об активности в системе в двоичный файл в каталоге/var/log/sa
.Выполните команду systemctl daemon-reload, чтобы убедиться, что
systemd
видит изменения.[root@servera ~]#
systemctl daemon-reload
Выполните команду systemctl, чтобы активировать юнит таймера
sysstat-collect.timer
.[root@servera ~]#
systemctl enable --now sysstat-collect.timer
Выполните команду while, чтобы подождать, пока в каталоге
/var/log/sa
не будет создан двоичный файл. Дождитесь появления приглашения оболочки.[root@servera ~]#
while [ $(ls /var/log/sa | wc -l) -eq 0 ]; \
do sleep 1s; done
В команде while выше ls /var/log/sa | wc -l возвращает
0
, если файла нет, и1
, если он существует. Команда while определяет, равно ли значение0
, и если да, она входит в цикл, который приостанавливается на одну секунду. Если файл существует, цикл while завершается.Выполните команду ls -l, чтобы убедиться, что двоичный файл в каталоге
/var/log/sa
был изменен в последние 2 минуты.[root@servera ~]#
ls -l /var/log/sa
total 8 -rw-r--r--. 1 root root 5156 Mar 2512:34
sa25[root@servera ~]#
date
Mon Mar 25 12:35:32 +07 2019В вашей системе вывод вышеуказанных команд может отличаться.
Выйдите из командной оболочки пользователя
root
и из системыservera
.[root@servera ~]#
exit
logout[student@servera ~]$
exit
logout Connection to servera closed.[student@workstation ~]$